//
// Created by ZYZ on 2020/6/17.
//
#include <stdio.h>
#include "test_linked_queue.h"
#include "../../include/define.h"
#include "../../include/type_linked_queue.h"
#include "../../src/linked_queue/linked_queue.h"

Status visit_linked_queue(QElemType e) {
    printf("%c ", e);
    return OK;
}

void test_linked_queue() {
#ifdef SELEMTYPE_CHAR
    printf("开始初始化队列 \n");
    LinkQueue queue;
    InitQueue(queue);
    printf("队列长度为 %d \n",QueueLength(queue));

    printf("开始插入队列 a,b,c \n");
    QElemType ele;
    ele = 'a';
    EnQueue(queue,ele);
    ele = 'b';
    EnQueue(queue,ele);
    ele = 'c';
    EnQueue(queue,ele);

    printf("开始遍历队列 \n");
    QueueTraverse(queue,visit_linked_queue);

    printf("开始从删除队头元素 \n");
    DeQueue(queue, ele);

//    printf("开始从删除队头元素 \n");
//    Dequeue(queue,ele);
//
//    printf("开始从删除队头元素 \n");
//    Dequeue(queue,ele);

    printf("再次遍历队列 \n");
    QueueTraverse(queue,visit_linked_queue);

    printf("开始获取队首元素 \n");
    QElemType headEle;
    GetHead(queue,headEle);
    printf("队首元素为 %c \n",headEle);

    printf("队列长度为 %d \n",QueueLength(queue));
    printf("队列是否为空: %d \n",QueueEmpty(queue));

    printf("开始销毁队列 \n");
    DestroyQueue(queue);
    printf("队列是否为空: %d \n",QueueEmpty(queue));
#endif
}

//开始初始化队列
//队列长度为 0
//开始插入队列 a,b,c
//开始遍历队列
//a b c
//开始从删除队头元素
//再次遍历队列
//b c
//开始获取队首元素
//队首元素为 b
//队列长度为 2
//队列是否为空: 0
//开始销毁队列
//队列是否为空: 1